package leetcode_1_20;

public class IntReverse_7 {
    /**
     * 7.1 ,整数反转 ，使用封装好的翻转方法，捕获异常的方式规避上下限问题
     * @param x
     * @return
     */
    public static int reverse1(int x) {
        if(x==0)
            return x;
        String a=new StringBuffer(String.valueOf(x)).reverse().toString();
        int index = a.length()-1,count=0,t=0;
        String result="";
        while (a.charAt(t++)=='0') //计算需要去掉几个开头的0
            count++;
        if(a.charAt(index ) == '-') {
            result = a.substring(count ,index);  //带-号，则去掉尾部-号
            result='-'+result;
        }else
            result = a.substring(count ,index+1);  ///不带-号，则全体返回
        try{
            return  Integer.parseInt(result);        //发生超出异常则捕获，返回0
        }catch(RuntimeException e) {
            return 0;
        }
    }

    /**
     * 7.1 ,整数反转 ，使用巧妙算法，计算每一位的数字
     * @param x
     * @return
     */
    public static int reverse2(int x) {
        long n = 0;
        while(x != 0) {
            n = n*10 + x%10;
            x = x/10;
        }
        return (int)n==n? (int)n:0;
    }
}
